package com.film.cinema.mapper;

import java.util.List;
import java.util.Map;

import com.film.cinema.domain.Emp;
import com.film.common.core.domain.entity.SysDept;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

/**
 * 员工管理Mapper接口
 * 
 * *@author fy
 * @date 2025-02-14
 */
@Repository
@Mapper
public interface EmpMapper 
{
    /**
     * 查询员工管理
     * 
     * @param empId 员工管理主键
     * @return 员工管理
     */
    public Emp selectEmpByEmpId(Long empId);

    /**
     * 查询员工管理列表
     * 
     * @param emp 员工管理
     * @return 员工管理集合
     */
    public List<Emp> selectEmpList(Emp emp);

    /**
     * 新增员工管理
     * 
     * @param emp 员工管理
     * @return 结果
     */
    public int insertEmp(Emp emp);

    /**
     * 修改员工管理
     * 
     * @param emp 员工管理
     * @return 结果
     */
    public int updateEmp(Emp emp);

    /**
     * 删除员工管理
     * 
     * @param empId 员工管理主键
     * @return 结果
     */
    public int deleteEmpByEmpId(Long empId);

    /**
     * 批量删除员工管理
     * 
     * @param empIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteEmpByEmpIds(Long[] empIds);

    /**
     * 按部门统计员工数量
     *
     * @return 部门ID为键，员工数量为值的Map
     */
//    @MapKey("deptId")
//    Map<Long, Integer> countEmpsByDept();
    @Select("select d.dept_name as deptName,count(d.dept_name) as dcounts" +
            " from sys_dept d,emp e" +
            " where d.dept_id = e.dept_id" +
            " group by e.dept_id")
    List<Map<String, Emp>> countEmpsByDept();

}
